home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 2
/
Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso
/
Aminet
/
text
/
print
/
hpdj500v6.lzh
/
HP_DeskJet500.doc
< prev
Wrap
Text File
|
1992-02-14
|
10KB
|
298 lines
HP_DeskJet500 version 6
=======================
© Copyright 1991, 1992. All rights reserved.
Lance Kibblewhite
1413 Bluemont Court
Herndon, VA 22070-3524
(703)787-8153
Bix: lkibblewhite
This is an Amiga Printer driver for the HP DeskJet 500 printer. It will not
work with either the original DeskJet or the DeskJet Plus, since it uses various
escape sequences that were first introduced with the DeskJet 500. It may or may
not work with HP LaserJet printers.
This printer is small and fast. It is written in hand-crafted assembler, and
occupies around 3-4K. It was developed on DOS 2.03, with a 68030, but my
assembler tells me it really is 68000 compatible, and as of V4, this is now
verifed as been the case. It would be nice (and a lot faster) if I could have
used 68030 opcodes and addressing modes, but that would have limited the
audience. It also works with DOS 1.3.
The examples in the RKM are, well, not too precise, and while necessary, are
certainly not sufficient. After much testing, I have discovered many of the
hidden rules.
The driver has been tested successfully with AmigaDOS 2.04.
Update History
==============
July 1, 1991 V1 Original release
July 9, 1991 V2 Added special 'shifted origin' mode for use with
Professional Page. See below in the section on
Professional Page for more details.
This feature seems to work very well, but I know it will
fail if you try to mix text and graphics an the same
page. Fortunately, PPage does not do this.
July 14, 1991 V3 Corrected some anomolies that caused problems when using
Excellence! with Draft or NLQ mode.
August 4, 1991 V4 Corrected the problems that prevented the driver from
running on a 68000. It was using a couple of MOVE.L's
where the destination may not have been word-aligned.
September 12, 1991 V5 Corrected two problems.
(1) The COMMA that appear when UNDERLINE was turned on.
(2) Super/Subscript behaviour was incorrect.
February 14, 1992 V6 When RENDER with a code of 5 was called with a null
IODRPReq value, which happens on the very first call,
the printer extended data was been set up for density 1,
rather then the maximum values. The only application
that had a problem with this was the PLT: handler.
This driver now works correctly with this handler.
Distribution
============
The driver may be distributed anywhere, by anyone, as long as the following
rules are obeyed.
o This document and the driver must be distributed together, and neither may
be changed.
o Extra documents and other files may be included should the distributor
determine it appropriate.
o If the driver is included with any commercial product, including any form
of distribution that demands a fee, I would appreciate the courtesy of
being informed.
Use
===
The HP_DeskJet500 driver may be used by anyone. There is no license fee, but
you are welcome to send me anything you may desire in return, that you believe I
might appreciate. Money comes to mind, but demos, utilities, and perhaps
something of your own creation would be suitable. It is always nice to get
a return on ones handiwork, but I do have a day job.
Liability
=========
Absolutley none. I have tested the driver to the best that my resources will
allow, and find it to operate most satisfactorily in the situations in which I
need to use. I can assume no liability should it cause any problems in any
other situation.
If you do find a problem, or have any suggestions however, I will be most
willing to listen, and if resources permit, I may even be able to address them.
Installation
============
Copy HP_DeskJet500 to DEVS:Printers and modify Printer Preferences to select it.
Features
========
The main feature of this driver is that it uses the compressed graphics modes
when sending graphics to the printer. It will dynamically switch modes, on a
line by line basis if necessary, with the optimization goal being the sending of
the minimum number of characters to the printer. I have found that mode 2
(TIFF) and Mode 3 (Delta) to used most of the time, but occassionally, mode 0
and mode 1 are used.
Character Sets
==============
The driver assumes that the Amiga character set, which is the ECMA-94 Latin 1
Character set, is also the character set selected on your DeskJet 500 via the
DIP switches. I decided against sending the actual initialization sequence to
select this character set, since then you would have no way of overriding it.
The only difference you will notice if this is not you printers character set,
is that the 8 bit characters will be incorrect.
Preferences
===========
How do the preferences get mapped onto the driver?
Paper Length
------------
The standard Letter size page only has a 10 inch print area. You could use the
Text Scale Mode to get more, but this also disables the use of margins, and has
a different effect depending on when it is enabled.
I use a value of 60 which results in ½ inch margins at the top and bottom.
Notice also that there is no way to set the top margin from preferences.
Left Margin
-----------
The value in the preferences is the first column in which to print, so a value
of 1 means print as far left as possible. This translates to an actual value of
zero for printer.
Right Margin
------------
Again, this is one larger then the printer requires, and indicates the last
column in which a character should print. The driver will again do the correct
translation.
Character Pitch
---------------
10-Pica Courier 10cpi
12-Elite Letter Gothic 12cpi
15-Fine Courier 16.67cpi
The mapping for 15-Fine is selected by the printer, since it does not have a
15cpi font.
Print Spacing
-------------
These will give you what you ask for. Note that the Paper Length is expressed
in number of lines at the selected spacing. At 8lpi, you could have a paper
length of up to 80 lines.
Print Quality
-------------
Both Draft and Letter are implemented.
This also applies to graphics at 300dpi. This is a little know feature of the
DeskJet500 printers, and perhaps also the earlier models as well. At 300dpi,
(only), the printer can print graphics in both DRAFT and NLQ modes. The NLQ
mode prints every pixel as requested, but in DRAFT mode, the printer will only
print 'most' of the pixels. This gives some extra printing speed, and results
in less ink use.
There are a couple of things to keep in mind here that can cause confusion. The
keypad MODE key controls both text quality and graphics quality, but the DRAFT
LED indicates text quality only. This is fine, as long as both text and
graphics are the same mode, which they will be if selected by the keypad. After
printer initialization however, this may not be the case. To reduce this
confusion, my driver, when initializing the printer, will read the current
preferences setting for print mode, and it will set both text and graphics to
the same mode. So the rules are: a) The preferences specify the inital mode
for both text and graphics, and b) the keypad toggles modes for both text and
graphics.
Graphics Density
----------------
1 75dpi
2 100dpi
3 150dpi
4 300dpi
5 75dpi (Shifted Origin)
6 150dpi (Shifted Origin)
7 300dpi (Shifted Origin)
The graphics area is currently set at 8 inches by 10 inches (even with shifted
origin. Se PPage below). At some stage I would like to add code to check the
paper type, and set the graphics limits accordingly.
Applications
============
These are some experiences with some applications and how they interact with the
driver.
InitPrinter
-----------
This program sends the following sequence to PRT:
<ESC>#1<LF>
The first three characters are the aRIN sequence, which is correct, but the <LF>
causes an unnecessary line feed, with the result that after doing an
InitPrinter, the first line will be misplaced. I fixed this by patching
InitPrinter to only send the first three characters.
My InitPrinter is that which comes with 2.03. It internal version is 36.3. Use
the VERSION command to find this.
I applied the following patch to correct this problem.
Address Code Instruction
OLD>00002C4 48780004 PEA (4)
NEW>00002C4 48780003 PEA (3)
Your offsets may be different.
Professional Page
-----------------
There have been some comments that the HP DeskJet printers do not behave
properly with Professional Page, in particular, the graphics origin is the upper
left of the printable area, rather then the upper left of the page. This is a
characteristic which is solved by the use of this driver, while retaining
compatibility with applicationse which assume the upper left position is
printable.
While the long term fix would be for the standard driver to include an escape
sequence to allow the origin to be specified (and therefore implemented in the
common printer device code), this driver provides an excellant short term
solution.
I have used densities 5, 6, and 7 to implement 75dpi, 150dpi, and 300dpi with an
origin assumed to be the upper left of the page, rather then the upper left of
the printable area. (There was no room to do this for 100dpi, sorry).
Using this mode with PPage, set your page size to 8½ × 11, and select one of
these densities when you do you dot matrix output. The internal bitmap is still
built asumming 8½ × 11, but only the 'middle' 8 × 10 area is actually printed.
This eliminates the introduction of any scaling etc. The top and bottom ½ inch,
and the left and right ¼ inch will not be printed. The clipping is done by the
driver. AmigaDos (and PPage) think they are still getting there full page of
output.
Remember, if you select one of these densities as the default (with
preferences), you will get strange results with say DeluxePaint which does not
allow you to directly override the density.
Excellence!
-----------
Use SCALE=72, and ensure you have INTEGER scaling and some bounds established.
This will avoid the aliasing problems.
With V3, The problem with the lpi and page size was corrected.
With V5, The problems with UNDERLINE and Super/Subscripts were corrected.
================================================================================